home *** CD-ROM | disk | FTP | other *** search
- /* ============================================================================ *
- large.c -- large code routines for drum machine
- By Talin.
- ©1991 The Dreamers Guild
- * ============================================================================ */
-
- #include "std_headers.h"
-
- #ifndef EXEC_TYPES_H
- #include <exec/types.h>
- #endif
-
- #ifndef INTUITION_INTUITION_H
- #include <intuition/intuition.h>
- #endif
-
- #ifndef DOS_DOS_H
- #include <dos/dos.h>
- #endif
-
- #include <intuition/classes.h>
-
- #include <midi/camd.h>
- #include <midi/mididefs.h>
- #include <libraries/realtime.h>
- #include <libraries/realtimebase.h>
-
- #include <clib/camd_protos.h>
-
- extern LONG clocks_per_column,
- total_playback_column,
- local_playback_column,
- next_column_time;
-
- extern WORD clock_state;
- extern struct Task *main_task;
-
- ULONG myHookFunc (struct pmTime *msg, struct PlayerInfo *pi);
- #pragma regcall( myHookFunc(a1,a2) )
-
- /* Hook function... */
-
- ULONG myHookFunc (struct pmTime *msg, struct PlayerInfo *pi)
- { struct Conductor *cond = pi->pi_Source;
-
- switch (msg->pmt_Method) {
- case PM_TICK:
- if (msg->pmt_Time > next_column_time)
- { /* I don't like this method... We need a real method... */
-
- total_playback_column++;
- next_column_time += clocks_per_column;
- Signal(main_task,SIGBREAKF_CTRL_F);
- }
- break;
-
- case PM_STATE:
- clock_state = cond->cdt_State;
- Signal(main_task,SIGBREAKF_CTRL_E);
- break;
-
- #if 0
- case PM_SHUTTLE:
- current_time = msg->pmt_Time;
- if ( (current_time ^ last_time) & ~0x3f)
- { Signal(main_task,SIGBREAKF_CTRL_F);
- last_time = current_time;
- }
- #endif
- }
- return 0L;
- }
-